package com.huluobo.a2107jetpackkotlindemo.databinding

import androidx.databinding.BaseObservable
import androidx.databinding.Bindable
import androidx.databinding.library.baseAdapters.BR

/**
 *  Created by LC on 2023/11/24.
 *  DataBinding的双向绑定总结:
 *  1.使用@Bindable 标记get方法,可以监听属性的变化
 *  2.使用notifyPropertyChanged(BR.userName) 在set方法中执行,可以通知其他观察者该属性是否改变
 *  3.BR是DataBinding的R文件,与正常的R文件类似,都是属性的类(映射)
 *  4.需要注意xml中一定要使用@={}这种形式,才能正确的给属性赋值和监听
 */
class DataBindingUser : BaseObservable() {
    @get:Bindable
    var userName: String = ""
        set(value) {
            field = value
            notifyPropertyChanged(BR.userName)
        }

    @get:Bindable
    var userId: String = ""
        set(value) {
            field = value
            notifyPropertyChanged(BR.userId)
        }
}